const path = require('path')
const ejs = require('ejs')
const fs = require('fs')
const exec = require("child_process").exec;

const ejsArr = ['.js', '.ts', '.vue', '.jsx', '.tsx', '.html', '.css', '.json']

exports.writeFile = (tmpDir, destDir, { answers, file }) => {
  fs.stat(path.join(tmpDir, file), (eror, stats) => {
    // 是否是文件
    const isFile = stats.isFile();
    // 是否是文件夹
    const isDir = stats.isDirectory();
    if (isDir) fs.mkdirSync(path.join(destDir, file));
    if (isFile) {
      // 如果满足 ejs 的文件规则 则进入 ejs 模板模式
      if (ejsArr.includes(path.extname(file).toLowerCase())) {
        ejs.renderFile(path.join(tmpDir, file), answers, function (err, res) {
          if (err) return console.log(err, '写入错误');
          fs.writeFileSync(path.join(destDir, file), res);
        });
      } else {
        // 不满足则直接读取文件并进行拷贝
        fs.readFile(path.join(tmpDir, file), function (err, info) {
          if (err) return console.log(err)
          fs.writeFileSync(path.join(destDir, file), info);
        })
      }
    }
  })
}

// 执行shell语法
exports.execNpmi = (cmd) => {
  // exec(cmd, {
  //   maxBuffer: 1024 * 2000,
  //   stdio: 'inherit',
  //   shell: true
  // }, function (err, stdout, stderr) {
  //   if (err) {
  //     console.log(err);
  //     Promise.reject(err);
  //   } else if (stderr.lenght > 0) {
  //     Promise.reject(new Error(stderr.toString()));
  //   } else {
  //     console.log(stdout);
  //     Promise.resolve();
  //   }
  // });
}
